In some applications, a “jitter buffer” is used to recreate a constant stream of information from a flow of packets carrying that information. The “jitter” in this stream occurs because the packets are delivered irregularly to a destination. In other words, packets that are generated every T milliseconds, for example, should ideally be delivered to the destination every T milliseconds. However, many networks, such as the Internet, cause asynchronous delivery of packets, with each successive packet typically experiencing a different end-to-end delay. Jitter buffers are used in these instances to reduce the likelihood that a gap is present in the stream of recreated information, due to the packet carrying the information that otherwise would have filled that gap having been delayed in the network. Jitter buffers typically perform this function by waiting a predetermined delay, called the “jitter buffer delay,” before “playing out” the first received packet. The jitter buffer delay allows time for succeeding packets to be received before preceding packets are played out. However, jitter buffer delay introduces its own problems, particularly in systems that are transmitting voice signals.
A need therefore exists for techniques that allow jitter buffer delays to be managed in such a way as to reduce jitter buffer delay yet still provide adequate voice quality.